// BIMFACE 模型处理-模型集成相关接口
// https://bimface.com/docs/model-derivative/v1/api-reference/integrateUsingPUT.html

import  bimfaceHttp from '@/api/Bimface';

enum Api {
  Integrate = '/v2/integrate',
  IntegrateStatus = '/integrate',
  IntegrateDetails = '/integrateDetails',
}

/**
 * @todo interface待实现
 * @abstract: 发起模型集成
 * @description: 对于参与集成的文件来说，当单个文件转换成功以后，可以将多个文件集成，生成一个全专业/楼层模型，默认会集成为流式加载V3.0的数据。由于集成不能立即完成，BIMFACE支持在模型集成完成以后，通过Callback机制通知调用方；另外，调用方也可以通过接口查询集成状态
 */
export function intiateModelIntegration(data: Object) {
  return bimfaceHttp.put<any>({ url: Api.Integrate, data: data });
}

/**
 * @todo interface待实现
 * @abstract: 查询集成状态
 * @description: 调用方发起集成以后，可以通过该接口查询集成状态
 */
export function getIntegrationStatus(params: { integrateId: number }) {
  return bimfaceHttp.get<any>({ url: Api.IntegrateStatus, params: params });
}

/**
 * @todo interface待实现
 * @abstract: 批量查询集成状态
 * @description: 调用方发起集成以后，可以通过该接口查询集成状态
 */
export function getIntegrationStatusInBatches(data: Object) {
  return bimfaceHttp.post<any>({ url: Api.IntegrateDetails, data: data });
}

/**
 * @todo interface待实现
 * @abstract: 删除集成模型
 * @description: 根据集成模型id删除集成模型
 */
export function deleteIntegration(params: { integrateId: number }) {
  return bimfaceHttp.delete<any>({ url: Api.Integrate, params: params });
}

/**
 * @todo interface待实现
 * @abstract: 更新集成信息
 * @description: 模型集成发起后，可以通过该接口更新集成信息，如集成名称
 */
export function updateIntegration(params: { integrateId: number; name?: string }) {
  return bimfaceHttp.patch<any>({ url: Api.Integrate, params: params });
}
